// #include <stdio.h>
// #include <stdlib.h>
// #include <stdbool.h>
// #include"windows.h"
// #define MAX_SIZE 100 // 队列的最大容量
//
// // 队列结构体
// typedef struct {
//     int data[MAX_SIZE]; // 存储队列元素的数组
//     int front;          // 队头指针
//     int rear;           // 队尾指针
// } Queue;
//
// // 初始化队列
// void initQueue(Queue* q) {
//     q->front = 0; // 队头指针初始化为0
//     q->rear = 0;  // 队尾指针初始化为0
// }
//
// // 判断队列是否为空
// bool isQueueEmpty(Queue* q) {
//     return q->front == q->rear; // 队头指针等于队尾指针表示队列为空
// }
//
// // 判断队列是否已满
// bool isQueueFull(Queue* q) {
//     return (q->rear + 1) % MAX_SIZE == q->front; // 队尾指针的下一个位置等于队头指针表示队列已满
// }
//
// // 入队操作
// bool enqueue(Queue* q, int value) {
//     if (isQueueFull(q)) { // 检查队列是否已满
//         printf("队列已满，无法入队!\n");
//         return false;
//     }
//     q->data[q->rear] = value; // 将元素放入队尾
//     q->rear = (q->rear + 1) % MAX_SIZE; // 队尾指针后移
//     return true;
// }
//
// // 出队操作
// bool dequeue(Queue* q, int* value) {
//     if (isQueueEmpty(q)) { // 检查队列是否为空
//         printf("队列为空，无法出队!\n");
//         return false;
//     }
//     *value = q->data[q->front]; // 获取队头元素
//     q->front = (q->front + 1) % MAX_SIZE; // 队头指针后移
//     return true;
// }
//
// // 获取队头元素
// bool getFront(Queue* q, int* value) {
//     if (isQueueEmpty(q)) { // 检查队列是否为空
//         printf("队列为空，无法获取队头元素!\n");
//         return false;
//     }
//     *value = q->data[q->front]; // 获取队头元素
//     return true;
// }
//
// // 打印队列
// void printQueue(Queue* q) {
//     if (isQueueEmpty(q)) { // 检查队列是否为空
//         printf("队列为空\n");
//         return;
//     }
//     int i = q->front;
//     while (i != q->rear) {
//         printf("%d ", q->data[i]);
//         i = (i + 1) % MAX_SIZE; // 循环遍历队列
//     }
//     printf("\n");
// }
//
// // 销毁队列
// void destroyQueue(Queue* q) {
//     // 由于使用了静态数组，无需释放内存
//     q->front = 0; // 重置队头指针
//     q->rear = 0;  // 重置队尾指针
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     Queue q;
//     initQueue(&q); // 初始化队列
//
//     // 入队操作
//     enqueue(&q, 10);
//     enqueue(&q, 20);
//     enqueue(&q, 30);
//     printf("入队后队列中的元素: ");
//     printQueue(&q);
//
//     // 获取队头元素
//     int value;
//     if (getFront(&q, &value)) {
//         printf("队头元素: %d\n", value);
//     }
//
//     // 出队操作
//     if (dequeue(&q, &value)) {
//         printf("出队元素: %d\n", value);
//     }
//     printf("出队后队列中的元素: ");
//     printQueue(&q);
//
//     // 判断队列是否为空
//     if (isQueueEmpty(&q)) {
//         printf("队列为空\n");
//     } else {
//         printf("队列不为空\n");
//     }
//
//     // 销毁队列
//     destroyQueue(&q);
//
//     return 0;
// }